const Generator = require('yeoman-generator')
module.exports = class extends Generator {
  prompting() {
    return this.prompt([
      {
        type: 'input',
        name: 'name',
        message: 'your project name',
        default: this.appname // appname 为项目生成目录名称
      }
    ]).then( answers => {
      // answers => { name: '用户输入的值'}
      this.answers = answers
    })
  }

  writing() {
    // 把每一个文件都通过模板转换到目标路径
    // 通过数组循环的方式 去对应生成文件
    const templates = [
      '.editorconfig',
      '.eslintignore',
      '.eslintrc.js',
      '.gitignore',
      '.prettierrc',
      'index.html',
      // 'package-lock.json'
      'package.json',
      'README.MD',
      'shim.d.ts',
      'tsconfig.json',
      'vue.config.js',
      // 'yarn.lock',
      'public/favicon.ico',
      // 图片
      'src/assets/logo.png',
      // 组件
      'src/components/HelloWorld.vue',
      'src/components/Auxiliary/auxiliary.vue',
      'src/components/center-box/button.vue',
      'src/components/center-box/center.vue',
      'src/components/center-box/module/button.ts',
      // 插件
      'src/plugins/element.ts',
      // 路由
      'src/router/index.ts',
      // VUEX
      'src/store/index.ts',
      // 页面
      'src/views/created/index.vue',
      'src/views/Home.ts',
      'src/views/news-list.vue',
      'src/views/todo-list.vue',
      'src/App.vue',
      // 通用样式
      'src/index.css',
      // vue 入口页面
      'src/main.ts',
    ]
    templates.forEach(item => {
      this.fs.copyTpl(
        this.templatePath(item),
        this.destinationPath(item),
        this.answers
      )
    })
  }
}